home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / parted / device.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  4KB  |  120 lines

  1. /*
  2.     libparted - a library for manipulating disk partitions
  3.     Copyright (C) 1998 - 2001, 2005 Free Software Foundation, Inc.
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  18. */
  19.  
  20. #ifndef PED_DEVICE_H_INCLUDED
  21. #define PED_DEVICE_H_INCLUDED
  22.  
  23. #include <parted/timer.h>
  24.  
  25. typedef long long PedSector;
  26.  
  27. typedef enum {
  28.     PED_DEVICE_UNKNOWN    = 0,
  29.     PED_DEVICE_SCSI        = 1,
  30.     PED_DEVICE_IDE        = 2,
  31.     PED_DEVICE_DAC960    = 3,
  32.     PED_DEVICE_CPQARRAY    = 4,
  33.     PED_DEVICE_FILE        = 5,
  34.     PED_DEVICE_ATARAID    = 6,
  35.     PED_DEVICE_I2O        = 7,
  36.     PED_DEVICE_UBD        = 8
  37. } PedDeviceType;
  38.  
  39. typedef struct _PedDevice PedDevice;
  40. typedef struct _PedDeviceArchOps PedDeviceArchOps;
  41. typedef struct _PedCHSGeometry PedCHSGeometry;
  42.  
  43. struct _PedCHSGeometry {
  44.     int        cylinders;
  45.     int        heads;
  46.     int        sectors;
  47. };
  48.  
  49. /* A hard disk device - eg. /dev/hda, not /dev/hda3 */
  50. struct _PedDevice {
  51.     PedDevice*    next;
  52.  
  53.     char*        model;            /* description of hardware */
  54.     char*        path;            /* device /dev entry */
  55.  
  56.     PedDeviceType    type;            /* SCSI, IDE, etc. */
  57.     int        sector_size;
  58.     PedSector    length;
  59.  
  60.     int        open_count;
  61.     int        read_only;
  62.     int        external_mode;
  63.     int        dirty;
  64.     int        boot_dirty;
  65.  
  66.     PedCHSGeometry    hw_geom;
  67.     PedCHSGeometry    bios_geom;
  68.     short        host, did;
  69.  
  70.     void*        arch_specific;
  71. };
  72.  
  73. struct _PedDeviceArchOps {
  74.     PedDevice* (*_new) (const char* path);
  75.     void (*destroy) (PedDevice* dev);
  76.     int (*is_busy) (PedDevice* dev);
  77.     int (*open) (PedDevice* dev);
  78.     int (*refresh_open) (PedDevice* dev);
  79.     int (*close) (PedDevice* dev);
  80.     int (*refresh_close) (PedDevice* dev);
  81.     int (*read) (PedDevice* dev, void* buffer,
  82.              PedSector start, PedSector count);
  83.     int (*write) (PedDevice* dev, const void* buffer,
  84.               PedSector start, PedSector count);
  85.     int (*sync) (PedDevice* dev);
  86.     int (*sync_fast) (PedDevice* dev);
  87.     PedSector (*check) (PedDevice* dev, void* buffer,
  88.                 PedSector start, PedSector count);
  89.     void (*probe_all) ();
  90. };
  91.  
  92. extern void ped_device_probe_all ();
  93. extern void ped_device_free_all ();
  94.  
  95. extern PedDevice* ped_device_get (const char* name);
  96. extern PedDevice* ped_device_get_next (const PedDevice* dev);
  97. extern int ped_device_is_busy (PedDevice* dev);
  98. extern int ped_device_open (PedDevice* dev);
  99. extern int ped_device_close (PedDevice* dev);
  100. extern void ped_device_destroy (PedDevice* dev);
  101.  
  102. extern int ped_device_begin_external_access (PedDevice* dev);
  103. extern int ped_device_end_external_access (PedDevice* dev);
  104.  
  105. extern int ped_device_read (PedDevice* dev, void* buffer,
  106.                 PedSector start, PedSector count);
  107. extern int ped_device_write (PedDevice* dev, const void* buffer,
  108.                  PedSector start, PedSector count);
  109. extern int ped_device_sync (PedDevice* dev);
  110. extern int ped_device_sync_fast (PedDevice* dev);
  111. extern PedSector ped_device_check (PedDevice* dev, void* buffer,
  112.                    PedSector start, PedSector count);
  113.  
  114. /* private stuff ;-) */
  115.  
  116. extern void _ped_device_probe (const char* path);
  117.  
  118. #endif /* PED_DEVICE_H_INCLUDED */
  119.  
  120.